From 1a93386154bd2d33f139dc31570053550c7a53a6 Mon Sep 17 00:00:00 2001 From: "cl349@firebug.cl.cam.ac.uk" Date: Tue, 13 Sep 2005 10:13:52 +0000 Subject: [PATCH] Fixed consoled race condition. Signed-off by: Andy Peace Signed-off-by: Christian Limpach --- tools/console/daemon/io.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/console/daemon/io.c b/tools/console/daemon/io.c index 08aeda1c46..2fead094b0 100644 --- a/tools/console/daemon/io.c +++ b/tools/console/daemon/io.c @@ -87,6 +87,7 @@ static void buffer_append(struct domain *dom) struct buffer *buffer = &dom->buffer; struct ring_head *ring = (struct ring_head *)dom->page; size_t size; + u32 oldcons; while ((size = ring->prod - ring->cons) != 0) { if ((buffer->capacity - buffer->size) < size) { @@ -98,7 +99,8 @@ static void buffer_append(struct domain *dom) } } - while (ring->cons < ring->prod) { + oldcons = ring->cons; + while (ring->cons < (oldcons + size)) { buffer->data[buffer->size] = ring->buf[XENCONS_IDX(ring->cons)]; buffer->size++; -- 2.30.2